/**
 * Copyright (c) [2025] [AGIROS] 
 * [travoddsgen] is licensed under Mulan PSL v2. 
 * You can use this software according to the terms and conditions of the Mulan PSL v2. 
 * You may obtain a copy of Mulan PSL v2 at: 
 *          http://license.coscl.org.cn/MulanPSL2 
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 
 * See the Mulan PSL v2 for more details.
 */ 

#ifndef parameterprocessor_h__
#define parameterprocessor_h__

#include <string>
#include <vector>
#include <map>

class ParameterProcessor {
public:
    ParameterProcessor(int argc, char* argv[]);
    bool validate();
    std::string get(const std::string& key, const std::string& defaultVal = "") const;
    bool has(const std::string& key) const;
    void set(const std::string& key, const std::string& value);
    const std::vector<std::string>& getIncludePaths() const;
    static std::string getFileName(const std::string& path);
    static bool fileExist(const std::string& path);
    static bool dirExist(const std::string& path);
    static bool normalizePath(std::string& path);
private:
    void printHelp() const;

    std::map<std::string, std::string> parameters;
    std::vector<std::string> includePaths;
};

#endif // parameterprocess_h__